package com.jeeplus.sys.utils;
import cn.hutool.captcha.LineCaptcha;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;

public class CustomLineCaptcha extends LineCaptcha {
    private Color textColor = Color.WHITE; // 字体颜色设置为白色

    public CustomLineCaptcha(int width, int height) {
        super(width, height, 4, 150); // 设置验证码位数为4
        this.setBackground(Color.BLACK); // 设置背景为黑色
    }

    @Override
    public Image createImage(String code) {
        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = bufferedImage.createGraphics();

        // 设置背景
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, width, height);

        // 设置字体和颜色
        g.setFont(this.font);
        g.setColor(textColor); // 使用自定义字体颜色

        // 绘制验证码字符串
        int x = (width - g.getFontMetrics().stringWidth(code)) / 2; // 计算文本起始位置
        int y = (height + g.getFontMetrics().getHeight()) / 2 - 5; // 计算文本纵向位置

        // 绘制每个字符，避免重复
        for (int i = 0; i < code.length(); i++) {
            int charX = x + i * g.getFontMetrics().charWidth(code.charAt(i));
            g.drawString(String.valueOf(code.charAt(i)), charX, y);
        }

        g.dispose();
        return bufferedImage;
    }
}
